home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / MNetsrc.hqx / Mac TCP_IP Source v.33 / global.h < prev    next >
Text File  |  1989-02-01  |  3KB  |  102 lines

  1. /* Global definitions used by every source file.
  2.  * Some may be compiler dependent.
  3.  */
  4.  
  5. /*
  6.  * the MAC and AMIGA preprocessors do not understand the defined
  7.  * directive.
  8.  */
  9. #define MAC 1
  10. #ifdef    MAC
  11. #define    defined(x) x
  12. #endif
  13.  
  14. #ifdef    AMIGA
  15. #define    defined(x) x
  16. #endif
  17.  
  18. #ifdef MAC
  19. #define PATH_DELIM ':'    /* to tell the pathname delimiter */
  20. #else
  21. #define PATH_DELIM '/'    /* to tell the pathname delimiter */
  22. #endif
  23.  
  24. /* Indexes into binmode in files.c; hook for compilers that have special
  25.  * open modes for binary files
  26.  */
  27. #define    READ_BINARY    0
  28. #define    WRITE_BINARY    1
  29. extern char *binmode[];
  30.  
  31. /* These two lines assume that your compiler's longs are 32 bits and
  32.  * shorts are 16 bits. It is already assumed that chars are 8 bits,
  33.  * but it doesn't matter if they're signed or unsigned.
  34.  */
  35. typedef long int32;        /* 32-bit signed integer */
  36. typedef unsigned short int16;    /* 16-bit unsigned integer */
  37. #define    uchar(x) ((unsigned char)(x))
  38. #define    MAXINT16 65535        /* Largest 16-bit integer */
  39.  
  40. /* Since not all compilers support structure assignment, the ASSIGN()
  41.  * macro is used. This controls how it's actually implemented.
  42.  */
  43. #ifdef    NOSTRUCTASSIGN    /* Version for old compilers that don't support it */
  44. #define    ASSIGN(a,b)    memcpy((char *)&(a),(char *)&(b),sizeof(b));
  45. #else            /* Version for compilers that do */
  46. #define    ASSIGN(a,b)    ((a) = (b))
  47. #endif
  48.  
  49. /* Define null object pointer in case stdio.h isn't included */
  50. #ifndef    NULL
  51. /* General purpose NULL pointer */
  52. #define    NULL (void *)0
  53. #endif
  54. #define    NULLCHAR (char *)0    /* Null character pointer */
  55. #define    NULLFP     (int (*)())0    /* Null pointer to function returning int */
  56. #define    NULLVFP     (void (*)())0    /* Null pointer to function returning void */
  57. #define    NULLFILE (FILE *)0    /* Null file pointer */
  58.  
  59. /* General purpose function macros */
  60. #define    min(x,y)    ((x)<(y)?(x):(y))    /* Lesser of two args */
  61. #define    max(x,y)    ((x)>(y)?(x):(y))    /* Greater of two args */
  62.  
  63. #ifdef    MPU8080    /* Assembler routines are available */
  64. int16 hinibble(),lonibble(),hibyte(),lobyte(),hiword(),loword();
  65.  
  66. #else
  67.  
  68. /* Extract a short from a long */
  69. #define    hiword(x)    ((int16)((x) >> 16))
  70. #define    loword(x)    ((int16)(x))
  71.  
  72. /* Extract a byte from a short */
  73. #define    hibyte(x)    (((x) >> 8) & 0xff)
  74. #define    lobyte(x)    ((x) & 0xff)
  75.  
  76. /* Extract nibbles from a byte */
  77. #define    hinibble(x)    (((x) >> 4) & 0xf)
  78. #define    lonibble(x)    ((x) & 0xf)
  79.  
  80. #endif
  81.  
  82. #if    (defined(SYS5) || defined(MAC))
  83. #define rindex    strrchr
  84. #define index    strchr
  85. #endif
  86.  
  87. #if defined(MAC)
  88. #define memcmp strncmp
  89. #define memcpy(x,y,n) movmem((y),(x),(n))
  90. #define memset(x,v,n) setmem((x),(n),(v))
  91. #endif
  92.  
  93. /* Heavily used functions from the standard library */
  94. char *index(),*rindex(),*malloc(),*calloc(),*ctime(),*tmpnam();
  95. long atol(),htol();
  96.  
  97. #ifndef MAC
  98. /* Hardware I/O functions that can be replaced with macros in some compilers */
  99. unsigned char inportb();
  100. unsigned int inportw();
  101. #endif
  102.